Conventionally, in large parallel and distributed systems, many processes/threads exist that need to be managed. Specifically, the control, execution, and migration of the processes need to be managed. Typically, programs or applications running on any of the processors in a large distributed and/or parallel system can start and/or use a very large number of processes.
In such systems, location of and access to process metadata (e.g., virtual-to-physical memory mappings, the process ID of a given process, where a process is being run, at what time the process started, what command the process is executing, etc.) can be a difficult task to manage because several processors may be attempting to access a given process's metadata at any time, or several processors may be searching for a process's metadata.
Traditionally, one method for managing processes in large multiprocessor systems uses a centralized approach. In such implementations, a central entity manages the resources, metadata, and other information associated with all the processes in the system. Using this method, a processor requesting metadata associated with a process requests metadata information for a process from the central entity using some identifying information associated with the process (e.g., a process ID). The central entity then responds to the request by providing the processor with the metadata associated with the process. In some cases, if all processes obtain information from one centralized entity, the centralized entity may become a bottleneck and cause performance issues to arise. Further, as the number of processes in the multiprocessor system increase, the central entity may have difficulty searching for the metadata information associated with a particular process.